//package com.ply.interceptor;
//
//import com.ply.controller.UserController;
//import com.ply.entity.vo.Token;
//import com.ply.utils.TokenUtils;
//import com.ply.utils.encoding.Base64;
//import org.apache.ibatis.plugin.Interceptor;
//import org.apache.ibatis.plugin.Intercepts;
//import org.apache.logging.log4j.LogManager;
//import org.apache.logging.log4j.Logger;
//import org.springframework.web.servlet.HandlerInterceptor;
//import org.springframework.web.servlet.ModelAndView;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.util.Map;
//
///**
// * @author XiaoPan
// * date: 2022/1/9 15:28
// * <p>
// * action:
// */
//
//public class UserLoginInterceptor implements HandlerInterceptor {
//    private static Logger log = LogManager.getLogger(UserLoginInterceptor.class.getName());
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//
//        response.setHeader("Content-Type", "text/html;Charset=utf-8");
//
//
//        //允许跨域访问，通过response对象写回一些跨域访问的头信息
//        response.setHeader("Access-Control-Allow-Origin","*");
//        //允许请求的方法
//        response.setHeader("Access-Control-Allow-Methods","GET,POST,PUT,DELETE");
//
//        response.setHeader("Access-Control-Expose-Headers", "Token");
//
//
//        response.setHeader("Access-Control-Allow-Headers", "Token");
//
//        response.setHeader("Access-Control-Allow-Credentials", "true");
//
//
//        String tokenBase64 = request.getHeader("Token");
//        String token = Base64.getUtf8(tokenBase64);
//
//        Map<String, Object> map = TokenUtils.getTokenAll(token);
//        Integer id = (Integer) map.get("id");
//        String type = (String) map.get("type");
//        Long expireTime = (Long) map.get("expireTime");
//        String md5 = (String) map.get("md5");
//
//        if (null == token || "".equals(token)){
//            log.info("没有token");
//            return false;
//        }
//
//        if (!TokenUtils.checkToken(id,type,expireTime,md5)){
//            log.info("无效的token");
//            return false;
//        }
//        if (!TokenUtils.compareTime(expireTime)){
//            log.info("无效的token");
//            return false;
//        }
//
//        //生成新的token
//        String newToken = TokenUtils.toToken(id, type);
//        //设置响应头
//        response.setHeader("Token",newToken);
//        return true;
//    }
//}
